package com.triones.api.service.third;

import com.triones.api.entity.*;
import com.triones.api.entity.bo.*;
import com.triones.api.entity.param.AvailableParams;
import com.triones.api.entity.param.CardBinParams;
import com.triones.api.entity.param.CardDetailParams;
import com.triones.api.entity.param.WalletSingleParams;

import java.util.List;
import java.util.Map;

/**
 * php 接口（调用第三方）
 */
public interface PhotonPayService {

    /**
     * 卡bin查询
     * @param params
     * @return
     */
    List<Map> getCardBin(CardBinParams params);

    /**
     * 添加持卡人信息
     * @param bo
     * @return
     */
    Map addCardholder(CardholderBodyBO bo);

    /**
     * 单卡开卡
     * @param bo
     * @return
     */
    Map openCard(BankCardBodyBO bo);

    /**
     * 卡片激活
     * @param bo
     * @return
     */
    Map cardActivate(CardActivateBO bo);

    /**
     * 卡片冻结/解冻操作
     * @return
     */
    void freezeCard(BankCardFreezeRecordDO dto);

    /**
     * 获取phptoken
     * @return
     */
    String getPhotonPayToken();

    /**
     * 添加收件人
     * @param bo
     * @return
     */
    Map addRecipient(RecipientBodyBO bo);

    /**
     * 卡更新
     */
    Map updateCard(UpdateCardRequestBodyBO bo);

    /**
     * 测试交易
     * @param bo
     * @return
     */
    Map textTxn(SandBoxTransactionRequestBodyBO bo);

    /**
     * 查询卡详情
     * @param params
     * @return
     */
    Map getCardDetail(CardDetailParams params);

    /**
     * 实时金额查询
     * @param params
     * @return
     */
    Map walletSingle(WalletSingleParams params);
}
